package xin.codedream.codelog.dao;

import org.apache.ibatis.annotations.Param;
import xin.codedream.codelog.model.entity.Article;

import java.util.List;

/**
 * 文章数据访问层
 *
 * @author NGLSL
 * @date 2018/8/19
 */
public interface ArticleDao {
    /**
     * 插入文章数据
     *
     * @param article 文章数据
     * @return int
     */
    int insertArticle(Article article);

    /**
     * 通过文章标题查询该文章是否存在
     *
     * @param title 文章标题
     * @return Article
     */
    Article selectArticleByTitle(@Param("title") String title);

    /**
     * 通过文章ID查询该文章
     *
     * @param articleId 文章标题
     * @return Article
     */
    Article selectArticleByArticleId(@Param("articleId") Long articleId);

    /**
     * 查询所有文章
     *
     * @param article 查询条件
     * @return List
     */
    List<Article> listAllArticle(Article article);

    /**
     * 更新文章信息
     *
     * @param article 文章数据
     * @return int
     */
    int updateArticleByArticleId(Article article);

    /**
     * 通过文章ID删除文章
     *
     * @param articleId 文章ID
     * @return int
     */
    int deleteArticleByArticleId(@Param("articleId") Long articleId);

    /**
     * 统计所有文章数量
     *
     * @return int
     */
    int countAllArticleQuantity();

    /**
     * 通过文章Id查询文章标题
     *
     * @param articleId 文章ID
     * @return String
     */
    String selectArticleTitleByArticleId(@Param("articleId") Long articleId);

    /**
     * 查询最近五篇文章
     *
     * @return List
     */
    List<Article> listFiveArticle();

    /**
     * 通过目录ID更新文章目录的关联
     *
     * @param cateId 目录ID
     * @param newCateId 新目录ID
     * @return int
     */
    int updateArticleCateByCateId(@Param("cateId") Long cateId, @Param("newCateId") Long newCateId);
}
